#include "log.h"
#include <stdlib.h>
#include <signal.h>
#include "Sesion.h"
#include "mensajes/Mensaje.h"
#include "ListaUsuarios.h"

#define EXIT_ERROR_PARAMETROS 1

int main(int argc, char *argv[]){

    if(argc < 3) {
	log(stdout, "%s <numero usuario> <id conversacion>\n", argv[0]);
	exit(EXIT_ERROR_PARAMETROS);
    }

    int numeroUsuario = atoi(argv[1]);
    int idConversacion = atoi(argv[2]);
    Sesion sesion;
    sesion.recuperar(numeroUsuario);
    Conversacion conversacion = sesion.getConversacion(idConversacion);

    sleep(2);
    ListaUsuarios listaUsuarios;
    log(stdout, "Conectado a la lista de usuarios.\n");

    std::vector<char> mensaje;

    while((mensaje=conversacion.recibirMensaje()).size()){
	MensajeTXT* texto = (MensajeTXT*)&mensaje[0];
	if(texto->good()){
	    Usuario *u = listaUsuarios.getUsuario(texto->idUsuario);
	    if(!u){
		log(stdout, "Hay un error: No se encontro al usuario %ld en la lista de usuarios.\n", texto->idUsuario);
	    }
	    else{
		log(stdout, "%s: ", u->getNombre());
	    }
	    log(stdout, "%s",texto->texto);
	}
	else{
	    log(stdout, "No es un mensaje de texto\n");
	}
    }
    perror("");
    log(stdout, "%d: Proceso presentador sale.\n",getpid());

    sleep(20);

    return 0;
}
